import numpy as np
from deepface import DeepFace


def check_face(image_path):
    try:
        # 使用DeepFace.analyze方法检测人脸 开启静默检测
        result = DeepFace.analyze(img_path=image_path, silent=True)

        # 检查result的长度是否等于1
        if len(result) == 1:
            return True
        else:
            return False
    except Exception as e:
        print(f"处理图片 {image_path} 时发生错误: {str(e)}")
        return False


def find_most_similar_face(target_embedding, embeddings_list):
    """
    在给定的人脸特征向量列表中找到与目标人脸特征向量最相似的下标。

    参数:
        target_embedding (np.array): 目标人脸的特征向量。
        embeddings_list (list of np.array): 包含多个人脸特征向量的列表。

    返回:
        int: 最相似人脸特征向量在列表中的下标。
    """
    # 初始化最小距离和对应的索引
    min_distance = float('1.2')
    closest_index = -1

    # 遍历列表中的每个特征向量
    for i, embedding in enumerate(embeddings_list):
        # 计算目标特征向量与当前特征向量之间的欧氏距离
        distance = np.linalg.norm(target_embedding - embedding)

        # 如果找到更小的距离，则更新最小距离和对应的索引
        if distance < min_distance:
            min_distance = distance
            closest_index = i

    return closest_index
